﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace TumbaloSoft.Models
{
    public class Empleado:PersonaNatural
    {
        
        private int idEmpleado;
        private TipoEmpleadoTumbalo tipoEmpleado;
        private double sueldoHora;
        private Horario horario;
        
        private PeriodoLaboral periodoLaboral;

        public PeriodoLaboral prPeriodoLaboral
        {
            get { return periodoLaboral; }
            set { periodoLaboral = value; }
        }


        public TipoEmpleadoTumbalo prTipoEmpleado

        {
            get { return tipoEmpleado; }
            set { tipoEmpleado = value; }
        }

        public int prIdEmpleado
        {
            get { return idEmpleado; }
            set { idEmpleado = value; }
        }


        [Required(ErrorMessage = "Se requiere saber el sueldo por hora.")]
        [RegularExpression(@"\d+\.?\d*", ErrorMessage = "Se requiere usar numeros")]    
        public double prSueldoHora
        {
            get { return sueldoHora; }
            set { sueldoHora = value; }
        }

        public Boolean validarEdad()
        {
            int edad = DateTime.Today.Year - this.prFechaNacimiento.Year;
            if (new DateTime(DateTime.Today.Year, this.prFechaNacimiento.Month, this.prFechaNacimiento.Day) > DateTime.Today) edad--;
            if (edad > 18 && edad < 65) return true;
            else return false;
        }

        [Required(ErrorMessage = "Se requiere saber el Horario.")]
        public Horario prHorario
        {
            get { return horario; }
            set { horario = value; }
        }

        public void timeToStr()
        {
            this.prHorario.prLunes.prDia = "LUNES";
            this.prHorario.prLunes.prHoraEntradaStr = this.prHorario.prLunes.prHoraEntrada.ToString(@"hh\:mm\:ss");
            this.prHorario.prLunes.prHoraSalidaStr = this.prHorario.prLunes.prHoraSalida.ToString(@"hh\:mm\:ss");
            this.prHorario.prMartes.prDia = "MARTES";
            this.prHorario.prMartes.prHoraEntradaStr = this.prHorario.prMartes.prHoraEntrada.ToString(@"hh\:mm\:ss");
            this.prHorario.prMartes.prHoraSalidaStr = this.prHorario.prMartes.prHoraSalida.ToString(@"hh\:mm\:ss");
            this.prHorario.prMiercoles.prDia = "MIERCOLES";
            this.prHorario.prMiercoles.prHoraEntradaStr = this.prHorario.prMiercoles.prHoraEntrada.ToString(@"hh\:mm\:ss");
            this.prHorario.prMiercoles.prHoraSalidaStr = this.prHorario.prMiercoles.prHoraSalida.ToString(@"hh\:mm\:ss");
            this.prHorario.prJueves.prDia = "JUEVES";
            this.prHorario.prJueves.prHoraEntradaStr = this.prHorario.prJueves.prHoraEntrada.ToString(@"hh\:mm\:ss");
            this.prHorario.prJueves.prHoraSalidaStr = this.prHorario.prJueves.prHoraSalida.ToString(@"hh\:mm\:ss");
            this.prHorario.prViernes.prDia = "VIERNES";
            this.prHorario.prViernes.prHoraEntradaStr = this.prHorario.prViernes.prHoraEntrada.ToString(@"hh\:mm\:ss");
            this.prHorario.prViernes.prHoraSalidaStr = this.prHorario.prViernes.prHoraSalida.ToString(@"hh\:mm\:ss");
            this.prHorario.prSabado.prDia = "SABADO";
            this.prHorario.prSabado.prHoraEntradaStr = this.prHorario.prSabado.prHoraEntrada.ToString(@"hh\:mm\:ss");
            this.prHorario.prSabado.prHoraSalidaStr = this.prHorario.prSabado.prHoraSalida.ToString(@"hh\:mm\:ss");
            this.prHorario.prDomingo.prDia = "DOMINGO";
            this.prHorario.prDomingo.prHoraEntradaStr = this.prHorario.prDomingo.prHoraEntrada.ToString(@"hh\:mm\:ss");
            this.prHorario.prDomingo.prHoraSalidaStr = this.prHorario.prDomingo.prHoraSalida.ToString(@"hh\:mm\:ss");
        }

        public bool validarHorario(ref string error)
        {
            if (horario == null)
            {
                error = "No se ingreso el horario del empleado";
                return false;
            }
            //Verificar Lunes
            if (horario.prLunes.prActivo=="1")
            {
                if (horario.prLunes.prHoraEntrada == null)
                {
                    error = "No se ingresó hora de ingreso el día Lunes.";
                    return false;
                }
                if (horario.prLunes.prHoraSalida == null)
                {
                    error = "No se ingresó hora de salida el día Lunes.";
                    return false;
                }
            }

            //Verificar Martes
            if (horario.prMartes.prActivo=="1")
            {
                if (horario.prMartes.prHoraEntrada == null)
                {
                    error = "No se ingresó hora de ingreso el día Martes.";
                    return false;
                }
                if (horario.prMartes.prHoraSalida == null)
                {
                    error = "No se ingresó hora de salida el día Martes.";
                    return false;
                }
            }



            //Verificar Miercoles
            if (horario.prMiercoles.prActivo=="1")
            {
                if (horario.prMiercoles.prHoraEntrada == null)
                {
                    error = "No se ingresó hora de ingreso el día Miercoles.";
                    return false;
                }
                if (horario.prMiercoles.prHoraSalida == null)
                {
                    error = "No se ingresó hora de salida el día Miercoles.";
                    return false;
                }
            }



            //Verificar Jueves
            if (horario.prJueves.prActivo=="1")
            {
                if (horario.prJueves.prHoraEntrada == null)
                {
                    error = "No se ingresó hora de ingreso el día Jueves.";
                    return false;
                }
                if (horario.prJueves.prHoraSalida == null)
                {
                    error = "No se ingresó hora de salida el día Jueves.";
                    return false;
                }
            }


            //Verificar Viernes
            if (horario.prViernes.prActivo=="1")
            {
                if (horario.prViernes.prHoraEntrada == null)
                {
                    error = "No se ingresó hora de ingreso el día Viernes.";
                    return false;
                }
                if (horario.prViernes.prHoraSalida == null)
                {
                    error = "No se ingresó hora de salida el día Viernes.";
                    return false;
                }
            }


            //Verificar Sabado
            if (horario.prSabado.prActivo=="1")
            {
                if (horario.prSabado.prHoraEntrada == null)
                {
                    error = "No se ingresó hora de ingreso el día Sabado.";
                    return false;
                }
                if (horario.prSabado.prHoraSalida == null)
                {
                    error = "No se ingresó hora de salida el día Sabado.";
                    return false;
                }
            }

            //Verificar Domingo
            if (horario.prDomingo.prActivo=="1")
            {
                if (horario.prDomingo.prHoraEntrada == null)
                {
                    error = "No se ingresó hora de ingreso el día Domingo.";
                    return false;
                }
                if (horario.prDomingo.prHoraSalida == null)
                {
                    error = "No se ingresó hora de salida el día Domingo.";
                    return false;
                }
            }

            return true;
        }

    }
}